<?php
/** @name : Utils.php - @author : theerasak.p - @since : 21 �.�. 2554 1:17:47 - @encoding : UTF-8 */
class Util
{

	/**
	 * @method อ้างไปถึง Action หรือ Controller อื่น
	 * @param controller=ชื่อ Controller ที่ต้องการเรียก, action=ชื่อ Action ที่ต้องการเรียกไปถึง
	 * @return ไม่มี
	 * @example Util::chain("dummy","add");
	 */
	public static function chain($controller,$action)
	{
		try
		{
			# ตรวจสอบว่าพบไฟล์ Controller รึเปล่า
			if(file_exists(CONTROLLERS_PATH.'/'.$controller.'.controller.php'))
			{
				require CONTROLLERS_PATH.'/'.$controller.'.controller.php';

				$controllerName = ucfirst($controller)."Controller";

				# ตรวจสอบ Class ว่ามีอยู่จริงรึเปล่า
				if(class_exists($controllerName))
				{
					$controller = new $controllerName();
						
					# ตรวจสอบว่า Action ที่ส่งมามีอยู่จริงรึเปล่า
					if(method_exists($controller,$action))
					{
						# เรียกไปยัง Action ที่ระบุมา
						$controller->$action();
					}
					else
					{
						throw new PageNotFoundException("ไม่พบ Action ที่อ้างมาถึง");	
					}
				}
			}
			else
			{
				throw new PageNotFoundException("ไม่พบ Controller ที่อ้างมาถึง");
			}
		}
		catch (PageNotFoundException $e)
		{
			$e->execute();
		}
	}

	/**
	 * @method สร้าง URL เพื่อใช้อ้างไปถึง Controller หรือ Action อื่น
	 * @param controller=ชื่อ Controller ที่ต้องการ URL, action=ชื่อ Action ที่ต้องการ URL, subdomain=หากเป็น subdomain ให้ระบุที่นี่ด้วย, params=ตัวแปรที่จะถูกส่งผ่าน URL ไปด้วย
	 * @return ไม่มี
	 * @example Util::chainURL("dummy","find");
	 */
	public static function chainURL($controller,$action="",$subdomain="",$params="")
	{
		if($subdomain!="")
		{
			$url = Config::site($subdomain)."/".$controller."/".$action;
		}
		else
		{
			$url = Config::site()."/".$controller."/".$action;
		}
		
		if($params!="")
		{
			$url.="/?".$params;
		}
			
		return $url;
	}

	/**
	 * @method เปลี่ยน URL ไปยังหน้าอื่น
	 * @param url=URL ที่ต้องการเปลี่ยนไปถึง
	 * @return ไม่มี
	 * @example Util::gotoURL(Util::chainURL("dummy","find"));
	 */
	public static function gotoURL($url)
	{
		echo "<script language=\"javascript\">window.location=\"".$url."\"</script>";
	}
	
	public static function cast($type,$value)
	{
		
	}
	
	public static function formatDate($date)
	{
		$date = split("-",$date);
		return $date[2]."/".$date[1]."/".($date[0]);
	}
	
	public static function getDateTime($data,$select)
	{
		$join = split(" ",$data);
		
		if($select=="date")
		{
			return self::formatDate($join[0]);
		}
		else if($select=="time")
		{
			return $join[1];
		}
		
		return self::formatDate($join[0])." เวลา ".$join[1]." น.";
	}
	
	/**
	 * @method แสดงนามสกุลของไฟล์
	 * @param filename=ชื่อไฟล์ที่ต้องการนามสกุล
	 * @return นามสกุลของไฟล์
	 * @example Util::getExtension("test.jpg");
	 */
	public static function getExtension($file_name)
	{
		$ext = strtolower(strrchr($file_name,"."));
		return $ext;
	}
}
?>